Business software development and implementation continues to be an area of research and improvement over the years. In general, business functionality for any complex business application can be broadly categorized into two areas. These are online functionality and batch functionality. Online functionality of a particular business application comprises the functions typically executed by one or more external users of the application while internal users execute batch functionality of the application transparently. Success attributes of the executions of internal batch functions of the application have direct impact on the success attributes of executions of online functionality. Since businesses strive to make online functionality available to their users for as much time possible during a work period, it is obviously critical that batch processes finish within an optimally short period of time.
Designing and implementing batch programs is a labor-intensive task requiring that several orthogonal strategies be integrated in a consistent and homogenous manner. The main strategic requirements that must be realized in developing a successful batch program are memory management, data recovery and restart capability, scheduling capability, error logging, and diagnostic capability.
Typically a batch program processes a large volume of data at any given time and is generally resource intensive. A batch program typically has at least some ability to recover from errors and restart with minimal re-computations. However, a batch program must be able to finish within a given timeframe. In prior-art, there is no tool support for generating and managing batch programs in a comprehensive manner that provides support for all of the requirements described above.
The traditional approach to designing implementing and managing batch programs is to first document the issues involved, provide sample code and guidelines for design, and then manually write the programs that are expected to meet the various and often complex design requirements of the program. Hand-coded programs tend to be error-prone and require considerable effort to implement and to test for functionality. Therefore, it is desired to reduce instances of required manual programming as much as possible.
What is clearly needed is a method and apparatus that can enable various design strategies of a batch program to be patterned as models supported by a model framework such that a user may simply initiate a model abstraction of the program and then leave it up to the frame work and code generators to automatically implement a correct batch program.